#ifndef __FactorManager_H__
#define __FactorManager_H__

#include "FactoryLib/OcRxPublic.h"
template<class ProductType, class ClassFactor>
class FactorManager : public FactorManagerBase<ProductType, ClassFactor>
{
public:
	FactorManager(void);

public:
	virtual ~FactorManager(void);

public:

	ClassFactor* Get(const ProductType& type) const;
  virtual void DeleteData();

protected:  
	virtual ClassFactor * _Creat(ProductType type, void* pData = NULL);
 

public:

	virtual ClassFactor * Create(ProductType type, void* pData = NULL, bool blnChange = true);

public:


public:
	virtual BOOL Regisit(ProductType type, ClassFactor *pclass, bool blnChange = true);

protected:
	ClassFactor * mCurclass;
  std::map<ProductType, ClassFactor*> mmapclass;
};

#include "FactoryLib/FactorManager.INL"


#endif
